package cn.ilovese.collect.controller.task;

import cn.ilovese.collect.service.task.TaskService;
import cn.ilovese.collect.vo.ResultVO;
import cn.ilovese.collect.vo.task.TaskFormVO;
import cn.ilovese.collect.vo.task.TaskVO;
import cn.ilovese.collect.vo.task.TaskWithUsernameVO;
import cn.ilovese.collect.vo.user.UserVO;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/task")
public class TaskController {

    @Resource
    TaskService taskService;

    //三个注解配置接收前端调用时传给的参数，你们自己根据需要给每个Controller方法的参数添加
    //@RequestBody，接收前端传递给后端的json字符串中的数据的(请求体中的数据的)
    //@RequestParam，将请求参数绑定到你控制器的方法参数上（是springmvc中接收普通参数的注解）
    //@PathVariable，接收请求路径中占位符的值

    // 获得所有任务，目前还不知道是对应前端哪个路由，用的get还是post方法，先都用post替代
    @GetMapping("/AllTasks")
    ResultVO<List<TaskWithUsernameVO>> getAllTasks(){
        return taskService.getAllTasks();
    }

    @GetMapping("/ValidTasks")
    ResultVO<List<TaskWithUsernameVO>> getAllValidTasks(){
        return taskService.getAllValidTasks();
    }
    // 获得正在招募众包工人的所有任务，目前还不知道是对应前端哪个路由，用的get还是post方法，先都用post替代

    @GetMapping("/3")
    List<TaskVO> getTasksNeedWorker(){
        return taskService.getTasksNeedWorker();
    }

    // 发包方获得自己发布的众包任务，目前还不知道是对应前端哪个路由，用的get还是post方法，先都用post替代
    @GetMapping("/boss/executing/{uid}")
    ResultVO<List<TaskWithUsernameVO>> getProducedTasks(@PathVariable Integer uid){
        return taskService.getProducedTasks(uid);
    }

    @GetMapping("/boss/completed/{uid}")
    ResultVO<List<TaskWithUsernameVO>> getCompletedTasks(@PathVariable Integer uid){
        return taskService.getCompletedTasks(uid);
    }
    // 众包工人获得自己正在执行的任务，目前还不知道是对应前端哪个路由，用的get还是post方法，先都用post替代
    @GetMapping("/worker/working/{uid}")
    ResultVO<List<TaskWithUsernameVO>> getWorkingTasks(@PathVariable Integer uid){
        return taskService.getWorkingTasks(uid);
    }

    // 众包工人获得自己历史完成的任务，目前还不知道是对应前端哪个路由，用的get还是post方法，先都用post替代
    @GetMapping("/worker/finished/{uid}")
    ResultVO<List<TaskWithUsernameVO>> getFinishedTasks(@PathVariable Integer uid){
        return taskService.getFinishedTasks(uid);
    }

    // 获得一个任务的详细信息，目前还不知道是对应前端哪个路由，用的get还是post方法，先都用post替代
    @GetMapping("/detail/{taskid}")
    ResultVO<TaskWithUsernameVO> getTaskById(@PathVariable Integer taskid){
        return taskService.getTaskById(taskid);
    }

    // 发布任务，目前还不知道是对应前端哪个路由，用的get还是post方法，先都用post替代
    @PostMapping("/create")
    ResultVO<TaskVO> createTask(@RequestBody TaskFormVO task){
        return taskService.createTask(task);
    }

    // 更新任务，目前还不知道是对应前端哪个路由，用的get还是post方法，先都用post替代
    @PostMapping("/9")
    ResultVO<TaskVO> updateTask(@RequestBody TaskVO task){
        return taskService.updateTask(task);
    }

    @PostMapping("/delete/{taskId}")
    ResultVO<TaskVO> deleteTask(@PathVariable Integer taskId){
        System.out.println(taskId);
        return taskService.deleteTask(taskId);
    }




}
